/*
* Copyright (c)  2017, ueboot.com
* All rights reserved.
* 2017-10-14 21:28:34
*/
package com.ueboot.weishop.service.goods;

import com.ueboot.weishop.entity.goods.*;
import com.ueboot.core.service.BaseService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * Created by yangkui  on 2017-10-14 21:28:34.
 *
 * @author yangkui
 * @since 2.0 by autocode
 */
public interface GoodsInfoService extends BaseService<GoodsInfoEntity> {
    Page<GoodsInfoEntity> findByActivity(Pageable pageable, String activityId);

    /**
     * 级联保存商品信息和商品关联的规格、属性、价格等信息
     *
     * @param goodsInfoEntity        商品本身基础信息
     * @param goodsSpecValueEntities 规格值列表
     * @param goodsAttrEntities      属性列表
     * @param goodsSalesSpecEntities 价格列表
     */
    void saveGoodsInfo(GoodsInfoEntity goodsInfoEntity, List<GoodsSpecValueEntity> goodsSpecValueEntities, List<GoodsAttrEntity> goodsAttrEntities,
                       List<GoodsSalesSpecEntity> goodsSalesSpecEntities);

    /**
     * 根据活动ID，查找活动对应的商品
     * @param activityId
     * @return
     */
    List<GoodsInfoEntity> findByActivityId(Long activityId);

    /**
     * 清空缓存
     */
    void clearGoodsInfoCache();

    /**
     * 根据活动ID，查找活动对应的商品，返回的格式为对象的json字符串，需要自己转一下
     * 结果进行了缓存
     * @param activityId
     * @return
     */
    List<String> findJSONByActivityId(Long activityId);

    List<GoodsInfoEntity> findByCategoryId(Long categoryId);

    /***
     * 根据类目code查询商品列表
     * @param code
     * @return
     */
    List<GoodsInfoEntity> findByCode(String code);

    /**
     * 根据ID查找商品对象的json格式字符串，用于存放到缓存当中。
     * @param goodsInfoId 商品ID
     * @return
     */
    String findById(Long goodsInfoId);

	void deleteGoodsFree(List<Integer> id);
}
